multiboot2
Convenient and safe parsing of Multiboot2 Boot Information (MBI)
structures and the contained information tags. Usable in no_std
environments,
such as a kernel. An optional builder
feature also allows the construction of
the corresponding structures.
It follows the Multiboot 2.0 specification at https://www.gnu.org/software/grub/manual/multiboot2/multiboot.html and the ELF 64 specification at http://www.uclibc.org/docs/elf-64-gen.pdf.
Design
For every Multiboot2 structure, there is an ABI-compatible rusty type. This enables a zero-copying parsing design while also enabling the creation of these structures via convenient constructors on the corresponding types.
Features and no_std
Compatibility
This library is always no_std
without alloc
. However, the default builder
-
feature requires the alloc
-crate and an #[global_allocator]
to be available.
You need the builder
only if you want to construct new boot information
structures at runtime. For parsing, this is not relevant, and you can
deactivate the default features.
Background: The Multiboot 2 Information Structure
The Multiboot information structure looks like this:
Field | Type |
---|---|
total size | u32 |
reserved | u32 |
tags | variable |
end tag = (0, 8) | (u32, u32) |
There are many different types of tags, but they all have the same beginning:
Field | Type |
---|---|
type | u32 |
size | u32 |
other fields | variable |
MSRV
The MSRV is 1.75.0 stable.
License & Contribution
See main README file.